package _Interface;

#초기 인터페이스 설정에 관련 된 함수
sub interface_related($$){
	my $interface_addr = $_[0];
	my $ARGV_addr = $_[1];

	my @ARGV = @$ARGV_addr;

	#check "if no argument" was specified
	@error_check_var = @ARGV;
	return -1 if(_Error::error_check(-1,\@error_check_var));

	#check whether "interface name is correct or not" .e.g eth -> x, eth0 -> o
	$error_check_var = $ARGV[$#ARGV];
	return -2 if(_Error::error_check(-2,\$error_check_var));

	#check if "interface has ip and not down"
	$error_check_var = `ifconfig $ARGV[$#ARGV]`;
	return -3 if(_Error::error_check(-3,\$error_check_var));

	#check if ip is assigned on given interface
	($error_check_var) = `ifconfig $ARGV[$#ARGV]` =~ /inet addr:([0-9.]*)\s/m;
	return -4 if(_Error::error_check(-4,\$error_check_var));

	#if no error, "set $interface with given dev"
	$$interface_addr = $ARGV[$#ARGV];
	return 0;
}

#설정 된 인터페이스에서 IP와 Network Address를 만든다
sub get_ip_and_net_addr($$$){
	my $interface_addr = $_[0];
	my $my_ip_addr = $_[1];
	my $network_address_addr = $_[2];

	my $ifconfig_msg;
	#ifconfig에서 자신의 아이피를 알아온다.
	$ifconfig_msg = `ifconfig $$interface_addr`;
	($$my_ip_addr) = $ifconfig_msg =~ /inet addr:([0-9.]*)\s/m;

	my $network_address_part;
	#알아온 아이피를 사용하여 네으워크 주소를 만든다. e.g. 192.168.0.10 -> 192.168.0.0
	($network_address_part) = $$my_ip_addr =~ /(192.168.\d{1,3}\.)\d{1,3}/;
	$$network_address_addr = $network_address_part."0/24";
	return 0;
}

1;
